home *** CD-ROM | disk | FTP | other *** search
- /*
- **
- ** popasl PLUGIN
- **
- ** Copyright: Ralph Wermke of Digital Innovations
- ** EMail : wermke@gryps1.rz.uni-greifswald.de
- ** WWW : http://www.user.fh-stralsund.de/~rwermke/di.html
- **
- ** Version : 1.1
- ** Date : 15-Dec-1997
- **
- ** ProgramID: 0007
- **
- ** History:
- ** 10-Nov-1997: [1.0]
- ** - initial release
- ** 15-Nov-1997: [1.0.1]
- ** - object name changed to popasl_plugin
- ** 15-Dec-1997: [1.1]
- ** - two new tags added
- ** PLA_PopAsl_ButtonOnRight [I..]
- ** PLA_PopAsl_NoFontExtension [I..]
- **
- */
-
- OPT OSVERSION=38
- OPT PREPROCESS
- OPT MODULE
-
- MODULE 'tools/easygui','tools/textlen',
- 'graphics/text',
- 'intuition/intuition','intuition/gadgetclass',
- 'utility/tagitem','utility',
- 'gadtools',
- 'libraries/gadtools','libraries/asl',
- 'asl'
-
- EXPORT OBJECT popasl_plugin OF plugin
- PRIVATE
- string : PTR TO CHAR
- type
- disabled
-
- gad_str : PTR TO gadget
- gad_bt : PTR TO gadget
- id_str
- id_bt
- bt_width
- bt_text : PTR TO CHAR
- buttonright
- noext
- imsg : PTR TO intuimessage
-
- ta : PTR TO textattr
- ENDOBJECT
-
- -> TAG_USER | PROG_ID<<16 | TAG_VALUE
- -> $80000000 | $0007<<16 | 0...
-
- EXPORT ENUM PLA_PopAsl_Disabled=$80070001,
- PLA_PopAsl_Contents,
- PLA_PopAsl_GadgetID,
- PLA_PopAsl_ButtonText,
- PLA_PopAsl_Type,
- PLA_PopAsl_ButtonOnRight,
- PLA_PopAsl_NoFontExtension
-
- EXPORT ENUM PLV_PopAsl_Type_Drawer=0,
- PLV_PopAsl_Type_File,
- PLV_PopAsl_Type_Font
- -> ,PLV_PopAsl_Type_Screen
-
-
- ->-- Constructor/ Destructor ---------------------------------
-
- ->>> popasl::popasl (Constructor)
- PROC popasl(tags=NIL:PTR TO tagitem) OF popasl_plugin
- DEF x
-
- IF utilitybase:=OpenLibrary('utility.library', 37)
- self.disabled :=GetTagData(PLA_PopAsl_Disabled, FALSE, tags)
- self.string :=GetTagData(PLA_PopAsl_Contents, '', tags)
- self.id_bt :=GetTagData(PLA_PopAsl_GadgetID, And(Shr(self,4),$FFFF), tags)
- self.type :=GetTagData(PLA_PopAsl_Type, PLV_PopAsl_Type_Drawer, tags)
- self.bt_text :=GetTagData(PLA_PopAsl_ButtonText, NIL, tags)
- self.buttonright :=GetTagData(PLA_PopAsl_ButtonOnRight, FALSE, tags)
- self.noext :=GetTagData(PLA_PopAsl_NoFontExtension, FALSE, tags)
-
- IF (self.bt_text=NIL)
- x:=self.type
- SELECT x
- CASE PLV_PopAsl_Type_Drawer
- self.bt_text:='Path...'
- CASE PLV_PopAsl_Type_File
- self.bt_text:='File...'
- CASE PLV_PopAsl_Type_Font
- self.bt_text:='Font...'
- -> CASE PLV_PopAsl_Type_Screen
- -> self.bt_text:='Screen...'
- DEFAULT
- Raise("TYPE")
- ENDSELECT
- ENDIF
-
- self.id_str:=self.id_bt+1
-
- CloseLibrary(utilitybase)
- ELSE
- Raise("UTIL")
- ENDIF
-
- ENDPROC
- -><<
-
- ->>> popasl::end (Destructor)
- PROC end() OF popasl_plugin
- IF self.string THEN Dispose(self.string)
- ENDPROC
- -><<
-
- ->-- overridden methods --------------------------------------
-
- ->>> popasl::will_resize
- PROC will_resize() OF popasl_plugin IS RESIZEX
- -><<
-
- ->>> popasl::min_size
- PROC min_size(ta:PTR TO textattr, fh) OF popasl_plugin
- self.bt_width:=textlen(self.bt_text,ta)+8
- ENDPROC (self.bt_width+(fh*8)),(fh+6)
- -><<
-
- ->>> popasl::gtrender
- PROC gtrender(gl, vis, ta:PTR TO textattr, x, y, xs, ys, win:PTR TO window) OF popasl_plugin
- DEF ng_bt, ng_str
-
- IF self.buttonright
- ng_bt :=[x+xs-self.bt_width+1, y, self.bt_width, ys, self.bt_text, ta, self.id_bt, 0, vis, 0]:newgadget
- ng_str:=[x, y, xs-self.bt_width, ys, NIL, ta, self.id_str, 0, vis, 0]:newgadget
- ELSE
- ng_bt :=[x, y, self.bt_width, ys, self.bt_text, ta, self.id_bt, 0, vis, 0]:newgadget
- ng_str:=[x+self.bt_width+1, y, xs-self.bt_width, ys, NIL, ta, self.id_str, 0, vis, 0]:newgadget
- ENDIF
-
- self.gad_bt:=CreateGadgetA(BUTTON_KIND, gl,
- ng_bt,
- [GA_DISABLED, self.disabled, TAG_DONE])
-
- self.gad_str:=CreateGadgetA(STRING_KIND, self.gad_bt,
- ng_str,
- [GA_DISABLED, self.disabled,
- GTST_MAXCHARS, 350,
- GTST_STRING, self.string,
- TAG_DONE])
- ENDPROC self.gad_str
- -><<
-
- ->>> popasl::clear_render
- PROC clear_render(win:PTR TO window) OF popasl_plugin
- DEF buffer:REG
-
- buffer:=self.gad_str.specialinfo::stringinfo.buffer
- Dispose(self.string)
- self.string:=String(StrLen(buffer)+1)
- StrCopy(self.string, buffer)
-
- ENDPROC
- -><<
-
- ->>> popasl::message_test
- PROC message_test(imsg:PTR TO intuimessage, win:PTR TO window) OF popasl_plugin
-
- self.imsg:=0
- IF imsg.class=IDCMP_GADGETUP
- IF (imsg.iaddress=self.gad_bt) OR (imsg.iaddress=self.gad_str)
- self.imsg:=imsg
- RETURN TRUE
- ENDIF
- ENDIF
-
- ENDPROC FALSE
- -><<
-
- ->>> popasl::message_action
- PROC message_action(class, qual, code, win:PTR TO window) OF popasl_plugin
- DEF filereq:PTR TO filerequester, fontreq:PTR TO fontrequester,
- res, len, buffer:REG, tags, x, s1=NIL:PTR TO CHAR, reqtype,
- s=NIL:PTR TO CHAR
-
- IF self.imsg
- buffer:=self.gad_str.specialinfo::stringinfo.buffer
- IF self.imsg.iaddress=self.gad_bt
- IF (aslbase:=OpenLibrary('asl.library', 38))
- self.set(PLA_PopAsl_Disabled, TRUE)
- x:=self.type
- SELECT x
- CASE PLV_PopAsl_Type_Drawer
- reqtype:=ASL_FILEREQUEST
- tags:=[ASLFR_WINDOW, win,
- ASLFR_SLEEPWINDOW, TRUE,
- ASLFR_TITLETEXT, 'Select Drawer',
- ASLFR_INITIALDRAWER, buffer,
- ASLFR_DRAWERSONLY, TRUE,
- TAG_DONE]
- CASE PLV_PopAsl_Type_File
- reqtype:=ASL_FILEREQUEST
- s1:=PathPart(buffer)-1
- s1:=String(len:=(s1-buffer)+2)
- StrCopy(s1, buffer, len-1)
- tags:=[ASLFR_WINDOW, win,
- ASLFR_SLEEPWINDOW, TRUE,
- ASLFR_TITLETEXT, 'Select File',
- ASLFR_INITIALFILE, FilePart(buffer),
- ASLFR_INITIALDRAWER, s1,
- TAG_DONE]
- CASE PLV_PopAsl_Type_Font
- reqtype:=ASL_FONTREQUEST
- s1:=PathPart(buffer)
- len:=s1-buffer
- IF len -> name/size
- s1:=String(len)
- StrCopy(s1, buffer,len)
- ELSE -> name
- s1:=String(StrLen(buffer)+2)
- StrCopy(s1, buffer)
- ENDIF
- x:=Val(FilePart(buffer), {len})
- tags:=[ASLFO_WINDOW, win,
- ASLFO_SLEEPWINDOW, TRUE,
- ASLFO_TITLETEXT, 'Select Font',
- ASLFO_INITIALNAME, s1,
- ASLFO_INITIALSIZE, IF len>0 THEN x ELSE 8,
- TAG_DONE]
- ENDSELECT
- IF (filereq:=AllocAslRequest(reqtype, NIL))
- res:=AslRequest(filereq, tags)
-
- IF res
- Dispose(self.string)
-
- x:=self.type
- SELECT x
- CASE PLV_PopAsl_Type_Drawer
- self.string:=String(StrLen(filereq.drawer)+1)
- StrCopy(self.string, filereq.drawer)
- CASE PLV_PopAsl_Type_File
- self.string:=String(len:=(StrLen(filereq.drawer)+StrLen(filereq.file)+2))
- StrCopy(self.string, filereq.drawer)
- AddPart(self.string, filereq.file, len)
- SetStr(self.string, StrLen(self.string))
- CASE PLV_PopAsl_Type_Font
- fontreq:=filereq
- s:=fontreq.attr::textattr.name
- self.string:=String(StrLen(s)+1+6)
- IF self.noext
- len:=InStr(s,'.font')
- IF len<>-1 THEN s[len]:=0
- ENDIF
- StringF(self.string, '\s/\d', s,fontreq.attr::textattr.ysize)
- IF self.noext THEN s[len]:="."
- ENDSELECT
-
- Gt_SetGadgetAttrsA(self.gad_str,self.gh.wnd,NIL,[GTST_STRING,self.string,TAG_DONE])
- ENDIF
- FreeAslRequest(filereq)
- ELSE
- Raise("AREQ")
- ENDIF
- self.set(PLA_PopAsl_Disabled, FALSE)
- CloseLibrary(aslbase)
- ELSE
- Raise("ASL")
- ENDIF
- IF s1 THEN Dispose(s1)
- -> don't call action function on cancel
- IF res=0 THEN RETURN FALSE
- ELSE
- IF self.imsg.iaddress=self.gad_str
- -> IF code=9
- -> ELSE
- Dispose(self.string)
- self.string:=String(StrLen(buffer)+1)
- StrCopy(self.string, buffer)
- -> ENDIF
- ENDIF
- ENDIF
- ENDIF
-
- ENDPROC TRUE
- -><<
-
- ->-- new methods ---------------------------------------------
-
- ->>> popasl::set
- PROC set(attr, value) OF popasl_plugin
- DEF x
-
- SELECT attr
- CASE PLA_PopAsl_Disabled
- self.disabled:=value
- Gt_SetGadgetAttrsA(self.gad_bt,self.gh.wnd,NIL,[GA_DISABLED,self.disabled,TAG_DONE])
- Gt_SetGadgetAttrsA(self.gad_str,self.gh.wnd,NIL,[GA_DISABLED,self.disabled,TAG_DONE])
- CASE PLA_PopAsl_Contents
- IF value
- Dispose(self.string)
- self.string:=String(StrLen(value)+1)
- StrCopy(self.string, value)
- Gt_SetGadgetAttrsA(self.gad_str,self.gh.wnd,NIL,[GTST_STRING,self.string,TAG_DONE])
- ENDIF
- ENDSELECT
-
- ENDPROC
- -><<
-
- ->>> popasl::get
- PROC get(attr) OF popasl_plugin
-
- SELECT attr
- CASE PLA_PopAsl_Disabled
- RETURN self.disabled, TRUE
- CASE PLA_PopAsl_Contents
- self.clear_render(NIL) -> copy input buffer to self.string
- RETURN self.string, TRUE
- ENDSELECT
-
- ENDPROC -1, FALSE
- -><<
-
-